package vip.zhenzicheng.algorithm.leetcode.bit;

/**
 * <a href="https://leetcode.cn/problems/single-number/">只出现一次的数字 [简单]</a>
 * 给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次，找出出现一次的元素
 * 进阶：不使用额外空间，并且时间复杂度为线性
 *
 * @author zhenzicheng
 * @date 2022-06-10 13:23
 */
public class SingleNumber_136 {

  public static void main(String[] args) {
    int[] arr = new int[]{35, 33, 98, 65, 375, 33, 375, 65, 98};
    System.out.println(new SingleNumber_136().singleNumber(arr));
  }

  public int singleNumber(int[] nums) {
    int result = 0;
    for (int n : nums) {
      result = result ^ n; // 出现两次的所有数都会被抵消，只剩下出现一次的数
    }
    return result;
  }
}
